# 基础类型

# 整数
from typing import Iterable


a =10
# 浮点数
b= 1.23
# 字符串
c = 'hello'
 # 多行字符串
c1 = """
hello 1
"""
# 布尔值（运算 and or not ）
d = True,False 
d1 =True 
# 空值
e = None
g =0
print(a) 
#常数
PI= 3.1415926

#list 
arr= [1,2,3,4,5]
# 长度
len(arr)
# 第一个
arr[0]
# 最后一个
arr[-1]
# 新增一个
arr.append(6)
# 在指定索引新增一个
arr.insert(4,9)
# 删除最后一个
arr.pop()
# 删除指定索引的元素
arr.pop(0)
# 替换掉
arr[0]=10
arr.append(10,[7,9])
# 二维数组
arr[10][0]

# tuple
# tuple一旦初始化就不能修改(不可变)
arr1 = (1,2,3,4,5)
tuple1=()
# 定义1个元素
tuple1=(1,)
# 可变tuple是指，里面的元素可变
# tuple的每个元素，指向永远不变。即指向'a'，就不能改成指向'b'，指向一个list，
# 就不能改成指向其他对象，但指向的这个list本身是可变的！
tuple2=(1,[2,3])
tuple2[1].append(4)
tuple2[1][0]=10


# dict
d={"zhangsan":10,"lisi": 200}
if d.index("zhangsan"):
    print(d["zhangsan"])
d.pop("zhangsan")

# set(是一组key的集合，但不存储value。key不能重复
s={1,2,4}
# 新增
s.add(6)
# 删除
s.remove(1)

# slice 切片
lists= [12,13,2,324,2342]
lists[0:3] # 取前3个等于lists[:3]
lists[-2] # 取倒数第一个


# 迭代
# dict的迭代
for key,val in d.items():
    print(key,val)

# list的迭代
for key,val in enumerate(lists):
    print(key,val)

# 判断是否可以迭代
isinstance(lists,Iterable)

# 直接作用于for循环的数据类型有以下几种：
# 一类是集合数据类型，如list、tuple、dict、set、str等；
# 一类是generator，包括生成器和带yield的generator function。
# 直接作用于for循环的对象统称为可迭代对象：Iterable。
# 可以使用isinstance()判断一个对象是否是Iterable对象：

# 迭代器
# next()函数调用并不断返回下一个值的对象称为迭代器：Iterator。
# 可以使用isinstance()判断一个对象是否是Iterator对象

# 生成器都是Iterator对象，但list、dict、str虽然是Iterable，却不是Iterator。
# 把list、dict、str等Iterable变成Iterator可以使用iter()函数：